import os
import subprocess


def convert_avif_to_jpeg(directory):
    """
    将指定目录中的所有 AVIF 文件转换为 JPEG 格式。

    :param directory: 包含 AVIF 文件的目录路径
    """
    # 检查目录是否存在
    if not os.path.exists(directory):
        print(f"目录不存在: {directory}")
        return

    # 遍历目录中的所有文件
    for filename in os.listdir(directory):
        if filename.lower().endswith(".avif"):
            # 构建完整的文件路径
            avif_path = os.path.join(directory, filename)
            jpeg_path = os.path.join(directory, os.path.splitext(filename)[0] + ".jpeg")

            # 使用 ffmpeg 转换文件
            try:
                subprocess.run(
                    ["ffmpeg", "-i", avif_path, jpeg_path],
                    check=True,
                    stdout=subprocess.PIPE,
                    stderr=subprocess.PIPE,
                )
                print(f"转换成功: {filename} -> {os.path.basename(jpeg_path)}")
            except subprocess.CalledProcessError as e:
                print(f"转换失败: {filename}")
                print(f"错误信息: {e.stderr.decode('utf-8')}")


if __name__ == "__main__":
    # 指定要转换的目录
    input_directory = "/Volumes/SSD/Downloads/images"  # 替换为你的目录路径

    # 调用转换函数
    convert_avif_to_jpeg(input_directory)
